var iw = function () {

    var _init = function (container) {
        var div = $("<div>").css({
            "position": "relative",
            "width": "100%",
            "height": "50px"
        }).addClass("iw-primary");
        var tools = $("<div>").addClass("tabs-tools").addClass("dropdown");
        var a = $("<a>").attr({
            "href": "javascript:void(0);",
            "data-toggle": "dropdown",
            "role": "button",
            "aria-haspopup": "true",
            "aria-expanded": "false"
        }).addClass("dropdown-toggle");
        var span = $("<span>").addClass("icon-laptop");
        a.append(span);
        var ul = $("<ul>").addClass("tab-tools").addClass("dropdown-menu");
        var l1 = $("<li>");
        var refresh = $("<a id='tool_refresh'>").attr({
            "href": "javascript:void(0);",
            "onClick": "iw.refresh();"
        }).text("刷新当前窗口");
        ;
        l1.append(refresh);
        var l2 = $("<li>");
        var close = $("<a id='tool_close'>").attr({
            "href": "javascript:void(0);",
            "onClick": "iw.close();"
        }).text("关闭当前窗口");
        l2.append(close);
        var l3 = $("<li>");
        var closeOthers = $("<a>").attr({
            "href": "javascript:void(0);",
            "onClick": "iw.closeOthers();"
        }).text("关闭其他窗口");
        l3.append(closeOthers);
        var ls = $("<li>").attr("role", "separator").addClass("divider");
        var l4 = $("<li>");
        var closeAll = $("<a>").attr({
            "href": "javascript:void(0);",
            "onClick": "iw.closeAll();"
        }).text("关闭所有窗口");
        ;
        l4.append(closeAll);
        ul.append(l1).append(l2).append(ls).append(ls).append(l3).append(l4);
        tools.append(a).append(ul);
        div.append(tools);

        var tabs = $("<ul>").attr("role", "tablist").addClass("tabs-menu");
        $(div).append(tabs);
        $(container).append(div);

        var content = $("<div>").addClass("tabs-content");
        $(container).append(content);


        /**
         * 页签点击
         **/
        $("body").on("click", ".tabs-menu li a", function () {
            $(".tabs-menu li").removeClass("active");
            $(this).parent().addClass("active");

            $(".tabs-content>div").removeClass("active");
            var id = $(this).parent().attr("data-id");
            $("#" + id).addClass("active");
        });

        /**
         * 关闭页签
         **/
        $("body").on("click", ".tabs-menu li .icon-remove", function () {
            var index = $(this).parent().index();
            var li = $(this).parent();
            var id = li.attr("data-id");
            if (li.is(".active")) {
                $(".tabs-menu li a").eq(index - 1).click();
            }
            $("#" + id).remove();
            li.remove();
        });
    };

    return {
        init: function (data) {
            if (!data) {
                alert('未配置相关参数，无法初始化');
                return false;
            }
            if (!data.container) {
                alert('未配置容器，无法初始化');
                return false;
            }
            if (!data.console) {
                alert('未配置首页，无法初始化');
                return false;
            }
            _init(data.container);
            data.console.fixed = true;
            iw.open(data.console);
        },
        refresh: function (id) {
            if (!id) {
                var src = $(".tabs-content>div.active iframe").attr("src");
                $(".tabs-content>div.active iframe").attr("src", src);
            } else {
                var ifr = $("#" + id).find("iframe").eq(0);
                var src = ifr.attr("src");
                ifr.attr("src", src);
            }
        },
        close: function (id) {
            if (!id) {
                $(".tabs-menu li.active .icon-remove").click();
            } else {
                $(".tabs-menu li[data-id='" + id + "'] .icon-remove").click();
            }
        },
        closeAll: function () {
            $.each($(".tabs-menu li .icon-remove"), function (i, o) {
                o.click();
            });
        },
        closeOthers: function () {
            $.each($(".tabs-menu li .icon-remove"), function (i, o) {
                if (!$(o).parent().is(".active")) {
                    o.click();
                }
            });
        },
        open: function (data) {
            if (data) {
                if (!data.id) {
                    console.log('iw open need id!');
                    return false;
                }
                if (!data.href) {
                    console.log('iw open need href!');
                    return false;
                }
                if (!data.title) {
                    console.log('iw open need title!');
                    return false;
                }
                if ($(".tabs-menu li[data-id='" + data.id + "']").length > 0) {
                    $(".tabs-menu li[data-id='" + data.id + "']").find("a").eq(
                        0).click();
                } else {
                    var li = $("<li>").attr("data-id", data.id);
                    var a = $("<a>").attr("href", "javascript:void(0);").text(
                        data.title);
                    var span = $("<span>").addClass(
                        data.fixed ? "" : "icon-remove");
                    li.append(a).append(span);
                    $(".tabs-menu").eq(0).append(li);
                    var div = $("<div>").attr("id", data.id);
                    var ifr = $("<iframe>").attr("src", data.href);
                    div.append(ifr);
                    $(".tabs-content").eq(0).append(div);
                    li.find("a").eq(0).click();
                }
            } else {
                alert('未配置相关参数，无法打开网页窗口');
                return false;
            }
        }
        , dialog: function (options) {
            var dialog = $("<div>").addClass("modal fade").attr({
                "tabundex": "-1",
                "role": "dialog"
            });
            var document = $("<div>").addClass("modal-dialog").attr("role", "document");
            if (options && options.size) {
                document.addClass("modal-" + options.size);
            }
            var content = $("<div>").addClass("modal-content");
            var header = $("<div>").addClass("modal-header");
            var cls = $("<button>").addClass("close modal-close-btn").attr({
                "data-dismiss": "modal",
                "type": "button",
                "aria-label": "Close"
            }).html('<span class="icon-remove"></span>');
            var title = $("<h5>").addClass("modal-title").text(!options ? "title" : options.title);
            var body = $("<div style='min-height: 300px'>").addClass("modal-body");
            var ifr = $("<iframe>").attr("src", !options ? "" : options.href).css({
                "border": "none",
                "width": "100%",
                "height": "100%"
            });
            var height = $("body").height();
            if (options.size && "sm" == options.size) {
                body.css({
                    "max-height": "200px"
                });
            }
            if (options.size && "vm" == options.size) {
                body.css({
                    "max-height": "500px"
                });
            } else {
                body.css({
                    "max-height": "800px"
                });
            }

            ifr.load(function () {
                var mainheight = $(this).contents().find("body").height();
                body.css({
                    "height": mainheight
                })
            });

            body.append(ifr);
            header.append(cls).append(title);
            content.append(header).append(body);
            document.append(content);
            dialog.append(document);
            dialog.modal("show");
            dialog.on('hidden.bs.modal', function (e) {
                if (options.closing && $.isFunction(options.closing)) {
                    options.closing();
                }
                dialog.remove();
            });
            return dialog;
        },
        closeDialog: function () {
            $("body").find(".modal-close-btn").click();
        }
    };
}();

var uploadify = function (options) {
    var op = {
        options: options
    };
    var eg = $("<div>").css({
        "position": "relative",
        "min-width": "135px",
        "text-align": "center",
        "float": "left"
    });
    var egimg = $("<img>").attr("src", "http://hotbb.repinchen.cn/upload_image.png").css({
        "width": "135px",
        "height": "240px",
        "border": "1px solid #e0e0e0",
        "border-radius": "4px",
        "cursor": "pointer",
        "margin": "8px"
    });
    var eginput = $("<input>").attr("type", "file").css("display", "none");
    var p = $("<p>").text("示例");
    eg.append(egimg).append(eginput).append(p);
    $(options.container).append(eg);
    egimg.click(function () {
        eginput.val("");
        eginput.click();
    });
    eginput.change(function () {
        var file = eginput[0].files[0];
        if (!file) {
            return false;
        }
        var formData = new FormData();
        formData.append("file", file);
        $.ajax({
            url: '/upload',
            dataType: 'json',
            type: 'post',
            data: formData,
            async: false,
            cache: false,
            contentType: false,
            processData: false,
            success: function (res) {
                var item = $("<div>").css({
                    "position": "relative",
                    "min-width": "135px",
                    "text-align": "center",
                    "float": "left"
                });
                var img = $("<img>").attr("src", res.image).css({
                    "width": "135px",
                    "height": "240px",
                    "border": "1px solid #e0e0e0",
                    "border-radius": "4px",
                    "cursor": "pointer",
                    "margin": "8px"
                });
                ;
                var title = $("<p>").text(res.title).attr("contenteditable", "plaintext-only");
                item.append(img).append(title);
                eg.before(item);
                img.on("click", function () {
                    if (confirm("是否删除" + $(this).parent().find("p").eq(0).text() + "?")) {
                        $(this).parent().remove();
                    }
                });
            },
            error: function (err) {
                alert(err.statusText);
            }
        })
    });

    op.images = function () {
        var images = $(options.container).find("img");
        var titles = $(options.container).find("p");
        var data = [];
        for (var i = 0; i < images.length - 1; i++) {
            data.push({
                "image": $(images[i]).attr("src"),
                "title": $(titles[i]).text()
            });
        }
        return data;
    };

    op.setContent = function (array) {
        for (var i = 0; i < array.length; i++) {
            var t = array[i].title;
            var item = $("<div>").css({
                "position": "relative",
                "min-width": "135px",
                "text-align": "center",
                "float": "left"
            });
            var img = $("<img>").attr("src", array[i].image).css({
                "width": "135px",
                "height": "240px",
                "border": "1px solid #e0e0e0",
                "border-radius": "4px",
                "cursor": "pointer",
                "margin": "8px"
            });
            ;
            var title = $("<p>").text(array[i].title).attr("contenteditable", "plaintext-only");
            item.append(img).append(title);
            eg.before(item);
            img.on("click", function () {
                if (confirm("是否删除" + $(this).parent().find("p").eq(0).text() + "?")) {
                    $(this).parent().remove();
                }
            });
        }
    };

    return op;
};